package com.heima.model.article.pojos;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * APP实名认证信息表
 *
 * 表名称：ap_user_realname
 * 作用：用于存储用户实名认证相关信息
 */
@Data
@TableName("ap_user_realname")// 对应数据库中的表名
public class ApUserRealname implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     * 数据库字段：id
     * 类型：int(11) unsigned auto_increment
     * 作用：唯一标识每条实名认证记录
     */
    @TableId(value = "id", type = IdType.AUTO) // 设置主键自增策略
    private Integer id;

    /**
     * 账号ID
     * 数据库字段：user_id
     * 类型：int(11) unsigned
     * 作用：标识用户账号的唯一ID
     */
    private Integer userId;

    /**
     * 用户名称
     * 数据库字段：name
     * 类型：varchar(20) utf8mb4
     * 作用：存储用户的姓名
     */
    private String name;

    /**
     * 身份证号
     * 数据库字段：idno
     * 类型：varchar(20)
     * 作用：存储用户的身份证号码
     */
    private String idno;

    /**
     * 正面照片URL
     * 数据库字段：font_image
     * 类型：varchar(100)
     * 作用：存储用户上传的身份证正面照片
     */
    private String fontImage;

    /**
     * 背面照片URL
     * 数据库字段：back_image
     * 类型：varchar(100)
     * 作用：存储用户上传的身份证背面照片
     */
    private String backImage;

    /**
     * 手持照片URL
     * 数据库字段：hold_image
     * 类型：varchar(100)
     * 作用：存储用户上传的手持身份证照片
     */
    private String holdImage;

    /**
     * 活体照片URL
     * 数据库字段：live_image
     * 类型：varchar(255)
     * 作用：存储用户上传的活体照片，用于活体检测
     */
    private String liveImage;

    /**
     * 审核状态
     * 数据库字段：status
     * 类型：tinyint(1) unsigned
     * 作用：标识实名认证的状态
     * 状态值：
     * - 0：创建中
     * - 1：待审核
     * - 2：审核失败
     * - 9：审核通过
     */
    private Integer status;

    /**
     * 审核失败原因
     * 数据库字段：reason
     * 类型：varchar(50)
     * 作用：如果审核失败，记录失败原因
     */
    private String reason;

    /**
     * 创建时间
     * 数据库字段：created_time
     * 类型：datetime
     * 作用：记录实名认证记录的创建时间
     */
    private Date createdTime;

    /**
     * 提交时间
     * 数据库字段：submited_time
     * 类型：datetime
     * 作用：记录实名认证记录提交审核的时间
     */
    private Date submitedTime;

    /**
     * 更新时间
     * 数据库字段：updated_time
     * 类型：datetime
     * 作用：记录实名认证记录的最后修改时间
     */
    private Date updatedTime;
}
